package cn.tedu.mybatis.mapper;

import cn.tedu.mybatis.eneity.Admin;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

//@Mapper
public interface AdminMapper {
    //Mybatis框架底层将通过接口代理模式来实现
    //接口全是public公开的

    //@Insert()//项目不支持这种配置,2不推荐相关注解,SQL语句很长,代码很糟糕
    //细节配置不方便使用,不方便分工合作,DBA数据库管理员,业务专精点数据库语言
    int insert(Admin admin);

    int deleteById(Long id);
    //只要是增 删 改 方法的返回值必须是int

    //根据ID修改某一条数据的密码
    //                     1 >>>>  arg0                             arg1      .....arg2   arg3
    //                     2 >>>> param1                           param2
    //3 @Param注解 用于配置名字,Mapper.xml里面的#{名称}参考的是注解的value的值,和参数变量名称已经无关
    //#{}中的值和@Param注解的value值一一对应
    //4用对象封装
    int updatePasswordById(@Param("id") Long id,@Param("password") String password);
    /*
    方法的参数的作用域和局部变量的作用域相同
    提示：在默认情况下，当Java程序源代码（.java文件）经过编译后，所
    有局部的量的名称都会丢失(局部变量只是为了开发时好理解)，为使得配置SQL语句时可根据指定的名称使
    用方法中的参数值，需要在方法的各参数前添加@Param以指定名称

    如果方法的参数只有1个，则可以不使用@Param指定名称，因为Mybatis可以直接
    找到此参数的值
     */

    Integer count();
}
